Programmable logic devices (PLDs) exist as a well-known type of programmable integrated circuit (IC) that may be programmed by a user to perform specified logic functions. There are different types of programmable logic devices, such as programmable logic arrays (PLAs) and complex programmable logic devices (CPLDs). One type of programmable logic device, known as a field programmable gate array (FPGA), is very popular because of a superior combination of capacity, flexibility, time-to-market, and cost.
An FPGA typically includes configurable logic blocks (CLBs), programmable input/output blocks (IOBs), and other types of logic blocks, such as memories, microprocessors, digital signal processors (DSPs), and the like. The CLBs, IOBs, and other logic blocks are interconnected by a programmable interconnect structure. The programmable interconnect structure (also referred to as a routing fabric) typically includes conductors of various lengths interconnected by programmable switches (referred to as programmable routing resources). For example, some types of conductors may span two CLBs (referred to as doubles), while other types of conductors may span six CLBs (referred to as hexes). The CLBs, IOBs, logic blocks, and interconnect structure are typically programmed by loading a stream of configuration data (known as a bitstream) into internal configuration memory cells that define how the CLBs, IOBs, logic blocks, and interconnect structure are configured. An FPGA may also include various dedicated logic circuits, such as digital clock managers (DCMs), input/output (I/O) transceivers, boundary scan logic, and the like.
As semiconductor technology has advanced, the amount and speed of logic available on an IC, such as an FPGA, has increased more rapidly than the number and performance of I/O connections. As a result, IC die stacking techniques have received renewed interest to address the interconnection bottleneck of high-performance systems. In stacked IC applications, two or more ICs are stacked vertically and interconnections are made between them. The stacked ICs may be digital, analog, or mixed-signal ICs, or a combination thereof. The FPGA may be used as a computational platform for the ICs, as well as to provide interconnections between the stacked ICs.
Notably, interconnections between stacked ICs may be made through the FPGA using the FPGA routing fabric. However, signal delays of paths constructed using FPGA routing resources can vary significantly from one type of resource to another. Thus, the FPGA routing fabric generally does not provide for creation of low-skew busses between stacked ICs. Moreover, the availability of programmable routing resources also depends on the design being implemented in the FPGA. As a result, there is no guarantee that a low-skew bus can be implemented between stacked ICs using the available routing resources. Accordingly, there is a need in the art for improved interconnections between stacked dice on a programmable logic device.